#include <malloc.h>
typedef unsigned int index_type;
static index_type *index = NULL;
/* 当前数据存放区的实际长度 */
static int length = 0;
/* 实际使用的数据存放区的最后一个区块的位置 */
static int position = -1;
/* 区块的大小 */
static index_type t_size = sizeof(unsigned int);
/* 动态分配内存 */
static index_type * resize(index_type size);
/* 压数据 */
int push_index(index_type i)
{
	if(NULL == resize(position + 2))
	{
		return 0;
	}
	else
	{
		index[++position] = i;
		return 1;
	}
}
/* 获取下标 */
int get_position(index_type p)
{
	if(position < 0)
	{
		return ++p;
	}
	return index[position--];	
}

/* 修改结构体容器内存 */
index_type * resize(index_type size)
{
	if(length < size)
	{
		void *temp = realloc(index,size * t_size);
		if(temp == NULL)
		{
			return (index_type *)NULL;
		}
		index = temp;
		length = size;
		position++;
		return index;
	}
	else
	{
		return index;
	}
}
void free_index(void)
{
	position = -1;
	length = 0;
	free(index);
	index = NULL;
}
